Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

273
Visualizações
Javascript: ¿cómo puedo construir una oración para mostrar datos en función de si los valores de datos son> 0?

Obtengo datos de una API, solo un objeto con valores numéricos relacionados con cada clave, y luego construyo una oración simple para mostrar los datos al usuario. Sin embargo, solo quiero incluir un valor de los datos si es mayor que 0. Aquí hay un ejemplo con datos simulados:

 let data = {red: 100, blue: 200, yellow: 0, green: 400}; let resultsSentence = `We found ${data.red} red posts, ${data.blue} blue posts, and ${data.green} green posts.` console.log(resultsSentence)

Como puede ver, dejé el amarillo fuera de la oración de resultados porque tiene un valor de 0 . Por supuesto, necesito poder generar esta oración dinámicamente en función de los datos que se devuelvan. Si uso condicionales, será un desastre, ya que hay demasiados escenarios posibles (escribir 15 declaraciones if/else no parece un buen enfoque).

¿Cómo puedo manejar esto? Necesito generar la oración en función de los valores que sean > 0 . Al principio pensé, fácil, simplemente insertaré todos los valores en una matriz, verificaré los 0 y eliminaré cualquier elemento que sea igual a 0 de la matriz. Luego, construya la oración en función de la longitud de la matriz, es decir, si la longitud de la matriz es 3 , entonces haga referencia a cada valor como array[0] , array[1] , array[2] . Sin embargo, esto presenta un problema, ya que necesito poder aclarar qué valores son cuáles en la oración. Por ejemplo, si elimino el yellow de la matriz, la longitud de la matriz será 3 , pero no sabré qué valor se eliminó.

¿Alguien puede ayudarme a encontrar una solución eficiente para esto?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede usar un bucle for..of simple para iterar sobre las claves y los valores del objeto, construyendo su cadena dentro de él.

Esto da como resultado una coma oxford , pero puede eliminarla en el condicional (donde elige usar and en su lugar).

 let data = {red: 100, blue: 200, yellow: 0, green: 400}; let res = 'We found ' // Keep a record of how many keys we've processed so we know when we're at the end let i = 1 for (const [k, v] of Object.entries(data)) { // we could just continue early here, but we want to keep adding to `i` if (v > 0) { // This is the last key so use `and` not a comma if (i === Object.keys(data).length) { res += `and ${v} ${k} posts.` } else { res += `${v} ${k} posts, ` } } i++ } console.log(res)

about 4 years ago · Juan Pablo Isaza Relatório

0

Prueba esto

 let data = {red: 100, blue: 200, yellow: 0, green: 400}; let str = []; let len = Object.keys(data).length; Object.entries(data).forEach(([key, val], index) => { let isLast = (len - 1 == index) && str.length > 0; if(val > 0) str.push((isLast ? 'and ' : '') + `${val} ${key} posts`); }) let resultsSentence = 'We found ' + str.join(', ') console.log(resultsSentence)

about 4 years ago · Juan Pablo Isaza Relatório

0

prueba esto (sin dependencias)

 const keys = Object.keys(data) const values = Object.values(data) let string = 'we found' values.map((item, index)=>{ if(item > 0){ string += ` ${item} ${keys[index]} posts,` } }) console.log(string.slice(0,-1)+'.')

prueba con lodash como

 const _ = require('lodash') let data = {red: 100, blue: 200, yellow: 0, green: 400}; let string = 'we found' _.map(data,(value,key)=>{ if(value > 0){ string += ` ${value} ${key} posts,` } }) console.log(string.slice(0,-1)+'.')
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda